---
hide_table_of_contents: true
sidebar_label: 链
sidebar_position: 6
---

import DocCardList from "@theme/DocCardList";

import CodeBlock from "@theme/CodeBlock";


# 入门指南: 链

:::info
[概念指南](https://docs.langchain.com/docs/components/chains)
:::info

在一些应用中，仅使用一个语言模型是可以的，但通常将语言模型与其他信息源（例如第三方API或其他语言模型)组合使用是非常有用的。

这就是链的概念。

LangChain提供了一个用于链的标准接口，以及一些可直接使用的内置链。您也可以创建自己的链。

<DocCardList />


## 高级

要实现自己的自定义链，您可以继承`BaseChain`并实现以下方法:

import SubclassInterface from "!!raw-loader!@examples/chains/advanced_subclass.ts";


<CodeBlock language="typescript">{SubclassInterface}</CodeBlock>


### 继承`BaseChain`

`_call`方法是自定义链必须实现的主要方法。它接受输入记录并返回输出记录。接收到的输入应符合`inputKeys`数组，返回的输出应符合`outputKeys`数组。

在自定义链中实现此方法时，值得特别关注的是`runManager`参数，它允许您的自定义链参与与内置链相同的回调系统[callbacks system](../../production/callbacks/)。

如果在自定义链中调用另一个链/模型/代理，则应将其传递给调用`runManager？.getChild（)`的结果，该结果将生成一个新的回调管理器，范围限定为该内部运行。例如:

import SubclassCall from "!!raw-loader!@examples/chains/advanced_subclass_call.ts";



<CodeBlock language="typescript">{SubclassCall}</CodeBlock>

